﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sistema.NFe.Xml.Interfaces;

namespace Sistema.NFe.Xml.Versao200
{
    class XmlRetornoCancelamentoNFe200 : Sistema.NFe.Xml.Interfaces.IXmlRetornoCancelamentoNFe
    {
        Int32 _status;
        String _descricaoStatus;
        long _protocolo;
        DateTime _dataCancelamento;

        #region Propriedades


        public DateTime DataCancelamento
        {
            get { return _dataCancelamento; }
            set { _dataCancelamento = value; }
        }

        public long Protocolo
        {
            get { return _protocolo; }
            set { _protocolo = value; }
        }
        
        public String DescricaoStatus
        {
            get { return _descricaoStatus; }
            set { _descricaoStatus = value; }
        }

        public Int32 Status
        {
            get { return _status; }
            set { _status = value; }
        }

        public String Xml
        {
            set { CarregaDadosXml(value); }
        }

        #endregion

        public XmlRetornoCancelamentoNFe200()
        {
            this._status = Int32.MinValue;
            this._descricaoStatus = string.Empty;
        }

        private void CarregaDadosXml(string Xml)
        {
            Mapeamento.TRetCancNFe dadosCancelamento = new Util.Serializacao().Deserialize<Mapeamento.TRetCancNFe>(Xml); ;
            Int32.TryParse(dadosCancelamento.infCanc.cStat, out this._status);
            long.TryParse(dadosCancelamento.infCanc.nProt, out this._protocolo);
            this._dataCancelamento = dadosCancelamento.infCanc.dhRecbto;
        }
    }
}
